/*
 * PagEventosConferencia.java
 * 
 * Projeto: Kruskal - SRAC
 * LEDS - Laboratório de Engenharia e Desenvolvimento de Software
 * IFES - Instituto Federal do Espírito Santo - Campus Serra.
 */
package srac.controleatividades.cih;

import java.util.List;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.*;
import srac.controleatividades.cci.CtrlAtividade;
import srac.controleatividades.cdp.Aluno;
import srac.controleatividades.cdp.StatusSubmissao;
import srac.controleatividades.cdp.TipoUsuario;
import srac.controleatividades.cdp.Usuario;

public class PagEventosConferencia extends GenericForwardComposer {

    private CtrlAtividade ctrlAtividade = CtrlAtividade.getInstance();
    private Window winEventosConferencia;
    private Listbox listAlunos;
    private Div boxInformacao;
    private Label msg;

    @Override
    public void doAfterCompose(Component comp) throws Exception {
        super.doAfterCompose(comp);
        ctrlAtividade.setPagEventosConferencia(this);
        while (listAlunos.getItemCount() > 0) {
            listAlunos.removeItemAt(0);
        }

        List<Aluno> alunos = ctrlAtividade.obterAlunosComAtividadesSubmetidas(); //Obtem todos os alunos que submeteram as atividades
        if (alunos != null) {

            for (int i = 0; i < alunos.size(); i++) {
                Aluno a = alunos.get(i);
                
                Listitem linha = new Listitem(alunos.get(i).getNome(), a);

                linha.appendChild(new Listcell(statusPag(alunos.get(i))));
                
                linha.setParent(listAlunos);
            }
        }
    }
    
    public void onCreate$winEventosConferencia(Event event) {
        Usuario u = (Usuario) Executions.getCurrent().getSession().getAttribute("usuario");
        
        //if feito para verificar se existe algum usuario logado, se nao existir eh redirecionado para o login
        if (u == null) {
            Executions.sendRedirect("/");
            winEventosConferencia.detach();
        }
        else{
            if (u.getTipo() != TipoUsuario.SECRETARIA) { //Verifica se o usuário é uma secretária
                Executions.sendRedirect("/");
                winEventosConferencia.detach();
            }
        }
    }

    public void refreshAluno(Aluno a) {
        for (int i = 0; i < listAlunos.getItemCount(); i++) {
            if (listAlunos.getItemAtIndex(i).getValue() == a) {
                listAlunos.getItemAtIndex(i).getChildren().clear();

                listAlunos.getItemAtIndex(i).appendChild(new Listcell(a.getNome()));
                
                listAlunos.getItemAtIndex(i).appendChild(new Listcell(statusPag(a)));
                
                break;
            }
        }
    }

    public void onClick$verificarAtividades(Event event) { 
        Listitem listitem = listAlunos.getSelectedItem();
        if (listitem != null) {
            Aluno a = listitem.getValue();
            ctrlAtividade.abrirFormularioConferencia(a);
        }
    }

    public void setMensagemAviso(String tipo, String mensagem) {
        boxInformacao.setClass(tipo);
        boxInformacao.setVisible(true);
        msg.setValue(mensagem);
    }

    public void onClick$boxInformacao(Event event) {
        boxInformacao.setVisible(false);
    }
    
    private String statusPag(Aluno a) //Metódo para mostrar o enum na tela
    {
        if (a.getStatusSubmissao().equals(StatusSubmissao.EM_ANALISE)) {
            return "Não Conferidas";
        } 
        else if (a.getStatusSubmissao().equals(StatusSubmissao.ATIVIDADES_CONFERIDAS)) {
            return "Conferidas";
        }
        else
        {
            return "Conferidas, pontuação insuficiente"; 
        }
    }      
}
